const DataValidator = require('./data-validator');

/**
 * 测试数据验证工具类
 */
function testDataValidator() {
    console.log('🧪 开始测试 DataValidator 工具类...\n');

    // 创建测试数据
    const testData = {
        "魏国新手村": {
            "act_id": 100,
            "area_id": 43,
            "id": 600,
            "imgType": 13,
            "name": "魏国新手村",  // 匹配的key
            "num": 1,
            "ss": 64,
            "type_id": 2
        },
        "孙家村": {
            "act_id": 100,
            "area_id": 43,
            "id": 600,
            "imgType": 13,
            "name": "密穴",  // 不匹配的key
            "num": 1,
            "ss": 64,
            "type_id": 2
        },
        "华山东峦": {
            "act_id": 100,
            "area_id": 43,
            "id": 600,
            "imgType": 13,
            "name": "华山东峦",  // 匹配的key
            "num": 1,
            "ss": 64,
            "type_id": 2
        },
        "无效数据1": {
            "act_id": 100,
            "area_id": 43,
            "id": 600,
            "imgType": 13,
            // 缺少name字段
            "num": 1,
            "ss": 64,
            "type_id": 2
        },
        "无效数据2": null,  // null值
        "无效数据3": "字符串值"  // 非对象值
    };

    console.log('📊 测试数据:');
    console.log(JSON.stringify(testData, null, 2));
    console.log('\n' + '='.repeat(60) + '\n');

    // 创建验证器实例
    const validator = new DataValidator();

    // 执行验证
    console.log('🔍 开始验证数据...');
    const stats = validator.validateDataSet(testData);

    // 显示验证结果
    console.log('\n✅ 验证完成！');
    console.log('📈 统计信息:');
    console.log(`  总数据量: ${stats.total}`);
    console.log(`  有效数据: ${stats.valid}`);
    console.log(`  无效数据: ${stats.invalid}`);
    console.log(`  有效率: ${((stats.valid / stats.total) * 100).toFixed(2)}%`);

    console.log('\n' + '='.repeat(60) + '\n');

    // 显示有效数据
    const validData = validator.getValidData();
    console.log('✅ 有效数据:');
    console.log(JSON.stringify(validData, null, 2));

    console.log('\n' + '='.repeat(60) + '\n');

    // 显示无效数据
    const invalidData = validator.getInvalidData();
    console.log('❌ 无效数据:');
    console.log(JSON.stringify(invalidData, null, 2));

    console.log('\n' + '='.repeat(60) + '\n');

    // 测试CSV转换
    console.log('📄 测试CSV转换...');
    const csvContent = validator.convertToCSV(validData);
    console.log('CSV内容:');
    console.log(csvContent);

    console.log('\n' + '='.repeat(60) + '\n');

    // 测试文件保存（可选）
    console.log('💾 测试文件保存功能...');
    try {
        validator.saveToFile('./test_output/test_valid_data.json', validData, 'json');
        validator.saveToFile('./test_output/test_valid_data.csv', validData, 'csv');
        console.log('✅ 测试文件保存成功！');
    } catch (error) {
        console.log('⚠️  文件保存测试跳过（可能是权限问题）');
    }

    console.log('\n🎉 所有测试完成！');
}

// 运行测试
if (require.main === module) {
    testDataValidator();
}

module.exports = { testDataValidator };
